package com.ssy.lingxi.pay.service;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.message.api.vo.request.SystemMessageRequest;
import com.ssy.lingxi.order.api.model.vo.request.OrderPayParameterFeignVO;
import com.ssy.lingxi.order.api.model.vo.response.PaymentParameterFeignDetailVO;
import com.ssy.lingxi.pay.api.dto.request.MobilePayRequest;
import com.ssy.lingxi.pay.api.dto.request.assetAccount.BalancePayRequest;
import com.ssy.lingxi.report.api.vo.request.OperateNoticeVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 内部接口服务
 * @author 伍将
 * @date 2020/11/25
 * @version 2.0.0
 */
public interface IFeignService {


    /**
     * 发送系统通知
     * @author 伍将
     * @date 2020/12/21
     * @param request:
     * @return:
     **/
    void sendSystemMessage(SystemMessageRequest request);

    /**
     * 批量发送系统通知
     * @author 伍将
     * @date 2020/12/21
     * @param requestList:
     * @return:
     **/
    void batchSendSystemMessage(List<SystemMessageRequest> requestList);

    /**
     * 新增系统操作通知
     * @author 伍将
     * @date 2021/1/12
     * @param noticeVO: 请求参数
     * @return 无返回
     **/
    void addSysOperateNotice(OperateNoticeVO noticeVO);

    /**
     * 授信微信还款
     */
    Wrapper<String> creditWeChatRepay(MobilePayRequest mobilePayRequest, Integer payType, HttpServletRequest request);

    /**
     * 授信余额还款
     * @author 伍将
     * @date 2020/12/31
     * @param payRequest: 支付请求参数
     * @return:
     **/
    Wrapper<String> creditBalanceRepay(BalancePayRequest payRequest);

    /**
     * 查询会员支付参数配置
     * @param payRequest
     * @return
     */
    Wrapper<PaymentParameterFeignDetailVO> findPaymentParameters(OrderPayParameterFeignVO payRequest);

    /**
     * 判断会员是否开启授信收款
     * @param memberId
     * @param memberRoleId
     * @return
     */
    Boolean isCreditPayment(Long memberId, Long memberRoleId);
    /**
     * 查询会员授信支付配置参数
     * @param memberId
     * @param memberRoleId
     * @return
     */
    PaymentParameterFeignDetailVO getCreditPayment(Long memberId, Long memberRoleId);
}
